﻿using Presentacion.Clases.Dto;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Seg.Logica;
using Seg.Entidades;
using Presentacion.Clases;

namespace Presentacion.Controllers.Mantenimiento
{
    public class ParametroController : Base
    {
        //
        // GET: /Parametro/

        public ActionResult Index()
        {
            Init(false);
            return View();
        }

        public JsonResult ListarParametroJQUERY(decimal idTabla, string anul, string sidx, string sord, int page, int rows)
        {

            List<Presentacion.Clases.Dto.DTOParametro> lista = new List<Presentacion.Clases.Dto.DTOParametro>();

            ParametroLogica servicio = new ParametroLogica();

            var sistemas = servicio.Listar(idTabla);
            var count = sistemas.Count();
            int pageIndex = page - 1;
            int pageSize = rows;
            int totalRecords = count;
            int totalPages = (int)Math.Ceiling((float)totalRecords / (float)pageSize);

            var items = sistemas.Skip(pageIndex * pageSize).Take(pageSize);

            var result = new
            {
                total = totalPages,
                page,
                records = count,
                rows = (
                    from item in items
                    select new
                    {
                        id = item.para_icodigo_parametro,
                        cell = new string[] { item.para_icodigo_parametro.ToString(), 
                                                item.para_icodigo_tabla.ToString(), 
                                                item.para_icodigo_registro.ToString(), 
                                                item.para_vnombre_parametro, 
                                                item.para_dvalor_numerico.ToString(), 
                                                item.para_vvalor_texto,
                                                item.para_cflag_modificar,
                                                item.para_cflag_eliminar
                        }
                    }).ToArray()
            };
            return Json(result, JsonRequestBehavior.AllowGet);
        }

        public JsonResult Insertar(PARAMETRO entidad)
        {
            Resultado resultado = new Resultado();
            try
            {
                if (!isLogout(ref resultado))
                {
                    ParametroLogica servicio = new ParametroLogica();
                    servicio.Insertar(entidad);
                    resultado.result = 1;
                    resultado.message = Constante.MensajeGenerico.MSG_OK_GRABAR;
                }
            }
            catch (Exception ex)
            {
                resultado.result = 0;
                resultado.message = Constante.MensajeGenerico.MSG_ERROR_GENERICO;
                ucLogApp.ucLog.GrabarLogError(NombreAPP, UsuarioActual, "Insertar", ex);
            }

            return Json(resultado, JsonRequestBehavior.AllowGet);
        }

        public JsonResult Actualizar(PARAMETRO entidad)
        {

            Resultado resultado = new Resultado();
            try
            {
                if (!isLogout(ref resultado))
                {
                    ParametroLogica servicio = new ParametroLogica();

                    servicio.Actualizar(entidad);
                    resultado.result = 1;
                    resultado.message = Constante.MensajeGenerico.MSG_OK_GRABAR;
                }
            }
            catch (Exception ex)
            {
                resultado.result = 0;
                resultado.message = Constante.MensajeGenerico.MSG_ERROR_GENERICO;
                ucLogApp.ucLog.GrabarLogError(NombreAPP, UsuarioActual, "Actualizar", ex);
            }


            return Json(resultado, JsonRequestBehavior.AllowGet);
        }

        public JsonResult ObtenerParametro(PARAMETRO entidad)
        {
            Resultado resultado = new Resultado();
            try
            {
                if (!isLogout(ref resultado))
                {
                    ParametroLogica servicio = new ParametroLogica();

                    var result = servicio.ObtenerParametro(entidad.para_icodigo_parametro);
                    resultado.result = 1;
                    resultado.data = Json(result, JsonRequestBehavior.AllowGet);
                }
            }
            catch (Exception ex)
            {
                resultado.result = 0;
                resultado.message = Constante.MensajeGenerico.MSG_ERROR_GENERICO;
                ucLogApp.ucLog.GrabarLogError(NombreAPP, UsuarioActual, "ObtenerParametro", ex);
            }
            return Json(resultado, JsonRequestBehavior.AllowGet);
        }

        public JsonResult Eliminar(PARAMETRO entidad)
        {
            Resultado resultado = new Resultado();
            try
            {
                if (!isLogout(ref resultado))
                {
                    ParametroLogica servicio = new ParametroLogica();

                    //foreach (int i in codigo)
                    //{
                    var result = servicio.Eliminar(entidad.para_icodigo_parametro);

                    if (result == 1)
                    {
                        resultado.result = 1;
                        resultado.message = Constante.MensajeGenerico.MSG_OK_ELIMINAR;
                    }
                    else
                    {
                        resultado.result = 0;
                        resultado.message = Constante.MensajeGenerico.MSG_ERROR_ELIMINAR;
                    }
                    //}
                }
            }
            catch (Exception ex)
            {
                resultado.result = 0;
                resultado.message = Constante.MensajeGenerico.MSG_ERROR_GENERICO;
                ucLogApp.ucLog.GrabarLogError(NombreAPP, UsuarioActual, "Eliminar", ex);
            }
            return Json(resultado, JsonRequestBehavior.AllowGet);
        }

        [HttpPost]
        public JsonResult ListarTipoDocumento()
        {
            Resultado resultado = new Resultado();
            try
            {
                if (!isLogout(ref resultado))
                {
                    var datos = new ParametroLogica().ObtenerTabla(Constante.TablaParametro.TipoDocumento)
                    .Select(c => new SelectListItem
                    {
                        Value = Convert.ToString(c.para_icodigo_registro),
                        Text = c.para_vnombre_parametro.Trim()
                    });
                    resultado.result = 1;
                    resultado.data = Json(datos, JsonRequestBehavior.AllowGet);
                }
            }
            catch (Exception ex)
            {
                resultado.result = 0;
                resultado.message = Constante.MensajeGenerico.MSG_ERROR_GENERICO ;
                ucLogApp.ucLog.GrabarLogError(NombreAPP, UsuarioActual, "ListarTipoDocumento", ex);
            }
            return Json(resultado, JsonRequestBehavior.AllowGet);
        }

        [HttpPost]
        public JsonResult ListarTipoTabla()
        {
            Resultado resultado = new Resultado();
            try
            {
                if (!isLogout(ref resultado))
                {
                    var datos = new ParametroLogica().ListarTipoTabla()
                     .Select(c => new SelectListItem
                     {
                         Value = Convert.ToString(c.para_icodigo_parametro),
                         Text = c.para_vnombre_parametro.Trim()
                     });
                    resultado.result = 1;
                    resultado.data = Json(datos, JsonRequestBehavior.AllowGet);
                }
            }
            catch (Exception ex)
            {
                resultado.result = 0;
                resultado.message = Constante.MensajeGenerico.MSG_ERROR_GENERICO;
                ucLogApp.ucLog.GrabarLogError(NombreAPP, UsuarioActual, "ListarTipoTabla", ex);
            }
            return Json(resultado, JsonRequestBehavior.AllowGet);
        }


       
    }


}
